构建微服务的十大 Golang 框架和库 | 您所在的位置:网站首页 › golang 框架排行 › 构建微服务的十大 Golang 框架和库 |
我使用这个库来管理命令应用程序,执行 runner 应用程序,初始化配置,并启动 Rest API。 基于 Cobra 的应用组织结构: 在 app/main.go 中: 在 app/cmd/root.go 中: Cobra:https://github.com/spf13/cobra 2配置读取器 (spf13/viper) Viper 是一个完整的 Go 应用配置解决方案。 Viper 可以读取以下内容: JSON TOML YAML HCL INI envfile 以及Java 属性配置文件示例 config/config.toml : 读取 config.go: 在 main.go 中使用 config 中的 value: Viper:https://github.com/spf13/viper 3Web 框架 (labstack/echo) 高性能、极简主义的 Go Web 框架 安装: 示例: 4依赖注入 (uber-go/fx) 我发现这个库非常有用,你不需要生成任何东西。只是代码。非常模块化,层次清晰。 一个基于依赖注入的 Go 应用框架。 Uber-go/fx: https://github.com/uber-go/fx 5Swagger 生成器、UI 和验证 在 swagger 部分,我必须使用不同的 3 个库,因为我找不到任何一个库可以在一个库中包含 3 个库。 a. Swagger 生成器 (swaggo/swag) Swag 将 Go 注释转换为 Swagger 文档 2.0。 Swag 将 Go 注释转换为 Swagger 文档 2.0。 我们已经为流行的 Go Web 框架 创建了各种插件。这使你可以快速地与现有的 Go 项目集成(使用 Swagger UI)。 支持的 Web 框架: gin echo buffalo net/httpSwag 已经处理了你的 swagger 文档。所以你不再需要写 swagger.yml 或 swagger.json 。你需要做的就是写注释。这是一个例子: swaggo/swag:https://github.com/swaggo/swag b. Swagger UI (swaggo/echo-swagger) 因为我用的是 echo,所以我选择这个作为 swagger 的用户界面。 使用示例: swaggo/echo-swagger:https://github.com/swaggo/echo-swagger c. Swagger 验证 (go-swagger/go-swagger) 这个包包含了 Swagger 2.0(也就是 OpenAPI 2.0)的 golang 实现:它知道如何序列化和反序列化 swagger 规范。 安装: 键入此命令以验证: 输出: go-swagger/go-swagger:https://github.com/go-swagger/go-swagger 6自定义记录器 (sirupsen/logrus) Logrus 是一个适用于 Go(golang) 的结构化记录器,与标准库记录器完全 API 兼容。 示例: sirupsen/logrus:https://github.com/sirupsen/logrus 7模拟生成器 (vektra/mockery) Golang 的模拟代码自动生成器 安装: 生成模拟: 输出: vektra/mockery:https://github.com/vektra/mockery 8迁移 (golang-migrate/migrate) 用 Go 编写的数据库迁移。作为 CLI 使用或作为库导入。 数据库驱动程序运行迁移: PostgreSQL Redshift Ql Cassandra SQLite(todo #165) SQLCipher MySQL/MariaDB Neo4j MongoDB CrateDB(todo #170) Shell(todo #171) Google Cloud Spanner CockroachDB ClickHouse Firebird MS SQL Server安装: 键入命令创建迁移文件: 键入命令运行迁移: 键入命令中断迁移: golang-migrate/migrate:https://github.com/golang-migrate/migrate 9消息传递 (NSQ) NSQ 拓扑: NSQ 组件: nsqlookupd (守护进程管理拓扑 / 路由) nsqd(守护进程管理接收、排队和传递消息) nsqadmin(nsq 的默认 Web UI)docker-compose 示例:(nsqlookupd, nsqd, nsqadmin) 执行: 在 golang 中: consume.go: 运行 consume.go: publish.go: 运行 publish.go: nsqio/go-nsq:https://github.com/nsqio/go-nsq 10SQL (jmoiron/sqlx) sqlx 是一个库,它在 Go 的标准 database/sql 库上提供了一组扩展。 我喜欢 sqlx 的一点是它们可以进行结构扫描。快速而简单的使用。 结构扫描示例: jmoiron/sqlx:https://github.com/jmoiron/sqlx 11额外附加 Go 例程分组 (sync/errgroup) https://pkg.go.dev/golang.org/x/sync/errgroup 为 golang 生成流畅的 SQL (Masterminds/squirrel)。 https://github.com/Masterminds/squirrel Golang Linter (golangci/golangci-lint) https://github.com/golangci/golangci-lint 断路器 (gojek/heimdall) https://github.com/gojek/heimdall Go 工具生成标签 (fatih/gomodifytags) https://github.com/fatih/gomodifytags 12总结 要建立应用程序,我们应该知道我们有什么特性,特别是如果我们想建立持续的应用程序和团队之间的合作。我建议有一个坚实的、可读性强的代码,这样在成为遗留代码之前(也许 5~10 年后),它可以更容易维护。 构建应用的 3 个关键: 简单设计(项目结构和依赖关系) 干净的代码(可读和可维护) 模块化(实心骨架和柔性骨架)为了把这些库都包装起来,我有一个设计简单、代码干净的模板或骨架项目。请看:https://github.com/kecci/goion 作者介绍: Kecci Kun,软件工程师。 https://keccikun.medium.com/top-10-framework-golang-library-to-build-microservice-391a2bb4c2cb 快狗打车的业务架构设计迭代实践 返回搜狐,查看更多 |
CopyRight 2018-2019 实验室设备网 版权所有 |